﻿using System;
using System.Diagnostics.Contracts;

namespace OpenWaves.ImageTransformations
{
    [ContractClass(typeof(ImageTransformationContract))]
    public interface IImageTransformation
    {
        void ApplyToImage(IImage image);
        string Serialize();
    }

    [ContractClassFor(typeof(IImageTransformation))]
    abstract class ImageTransformationContract : IImageTransformation
    {
        public void ApplyToImage(IImage image)
        {
            Contract.Requires(image != null);

            throw new NotImplementedException();
        }

        public string Serialize()
        {
            throw new NotImplementedException();
        }
    }
}